Package-level declarations

Types

Link copied to clipboard
data class Button(val label: String, val description: String = label, val id: String = UUID.randomUUID().toString()) : Control
Link copied to clipboard
data class Checkbox(val label: String, val checked: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
sealed interface Control
Link copied to clipboard
Link copied to clipboard
sealed class ControlValue
Link copied to clipboard
data class DatePicker(val label: String, val value: String? = null, val minDate: String? = null, val maxDate: String? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
Link copied to clipboard
class DoubleRangeValidator(min: Double, max: Double, errorMessage: String) : Validator
Link copied to clipboard
data class Dropdown(val label: String, val options: List<DropdownOption>, val placeholder: String = "", val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class DropdownOption(val label: String, val value: String = label)
Link copied to clipboard
class DropDownValidator(options: List<String>, errorMessage: String) : Validator
Link copied to clipboard
data class FileUpload(val label: String, val acceptedFileTypes: List<String> = listOf("*/*"), val maxFileSize: Long? = null, val maxFiles: Int = 1, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class Form(val title: String, val controls: List<Control>, val id: String = UUID.randomUUID().toString())

UX-independent form definition. Controls, not data.

Link copied to clipboard
class FormBinder<T : Any>(targetClass: KClass<T>)

Form binder system that maps form submission values to Kotlin data classes and Java classes

Link copied to clipboard

Indicates that this is a form field. Only necessary for renaming and other customization. IMPORTANT: In Kotlin this annotation must be on the property, as in @property:FormField("controlId") myProperty: String

Link copied to clipboard
interface FormGenerator

Generate forms from JVM types.

Link copied to clipboard
interface FormProcessor
Link copied to clipboard
object Forms
Link copied to clipboard
data class FormSubmission(val formId: String, val values: Map<String, Any>, val submissionId: String = UUID.randomUUID().toString(), val timestamp: Instant = Instant.now())

Raw data from the user

Link copied to clipboard
data class FormSubmissionResult(val submission: FormSubmission, val values: Map<String, ControlValue>, val valid: Boolean = true, val validationErrors: Map<String, String> = emptyMap())
Link copied to clipboard

Indicates that this is not a form field

Link copied to clipboard
class PatternValidator(pattern: String, errorMessage: String) : Validator
Link copied to clipboard
data class RadioGroup(val label: String, val options: List<RadioOption>, val selectedValue: String? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class RadioOption(val label: String, val value: String = label)
Link copied to clipboard
sealed interface RequirableControl : Control
Link copied to clipboard
Link copied to clipboard

Simple form generator that uses FormField annotations

Link copied to clipboard
data class Slider(val label: String, val min: Double = 0.0, val max: Double = 100.0, val step: Double = 1.0, val value: Double = min, val showMarkers: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
annotation class Text(val label: String, val placeholder: String = "")

Annotation for a text field

Link copied to clipboard
data class TextArea(val label: String, val placeholder: String = "", val value: String = "", val rows: Int = 3, val maxLength: Int? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class TextField(val label: String, val placeholder: String = "", val value: String = "", val maxLength: Int? = null, val required: Boolean = true, val disabled: Boolean = false, val validationPattern: String? = null, val validationMessage: String? = null, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class TimePicker(val label: String, val value: String? = null, val is24Hour: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class Toggle(val label: String, val enabled: Boolean = false, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : Control
Link copied to clipboard
data class ValidationResult(val isValid: Boolean, val errorMessage: String? = null)
Link copied to clipboard
fun interface Validator

Functions

Link copied to clipboard
inline fun <T : Any> FormSubmissionResult.bindTo(): T

Extension function to make binding more convenient

fun <T : Any> FormSubmissionResult.bindTo(javaClass: Class<T>): T

Extension function for Java class binding

Link copied to clipboard
inline fun <T : Any> FormGenerator.generateForm(title: String): Form

Generate a form from any class with FormField annotations